package com.miyu.plugins.result;

import com.alibaba.fastjson2.JSONObject;

/**
 * 返回封装的数据
 * code  1001  成功 ; 1002 信息 ;1003  警告  ; 1004  错误 ;  1005 exception 异常类
 * statue 返回四种类型 success 成功 error 错误  info 提示  warning 警告
 *
 * 消息提示类 需要后端返回消息提示类
 * 数据第一层 status 只包含类型 和 信息
 *  type success 成功 error 错误  info 提示  warning 警告
 *  msg
 *
 * @author MIYU
 */
public class ResultSend {
    /**
     * 成功
     * @param t t
     * @return {@link ResultSuccess} <{@link T}>
     */
    public static <T> ResultSuccess<T> success(T t){
        ResultSuccess result = new ResultSuccess();
        result.setStatue(ResultEnum.SUCCESS.getCode());
        result.setMsg("操作成功");
        result.setCode("1001");
        result.setData(t);
        return   result ;
    }


    /**
     * 错误信息
     * @return {@link JSONObject}
     */
    public static <T> ResultInfo error(){
        ResultInfo resultInfo = new ResultInfo();
        resultInfo.setCode("1004");
        resultInfo.setMsg("操作错误");
        resultInfo.setStatue(ResultEnum.ERROR.getCode());
        return   resultInfo ;

    }
    public static <T> ResultInfo error(Object msg){
        ResultInfo resultInfo = new ResultInfo();
        resultInfo.setCode("1004");
        resultInfo.setMsg(String.valueOf(msg) );
        resultInfo.setStatue(ResultEnum.ERROR.getCode());
        return   resultInfo ;

    }

    /**
     * 警告信息
     * @param message 消息
     * @return {@link JSONObject}
     */
    public static <T> ResultInfo  warning(String message){
        ResultInfo resultInfo = new ResultInfo();
        resultInfo.setCode("1003");
        resultInfo.setMsg("操作异常");
        resultInfo.setStatue(ResultEnum.WARNING.getCode());
        return   resultInfo ;
    }

    /**
     * 信息提示
     * @param message 消息
     * @return {@link JSONObject}
     */
    public static  <T> ResultInfo  info(String message){
        ResultInfo resultInfo = new ResultInfo();
        resultInfo.setCode("1002");
        resultInfo.setMsg(message);
        resultInfo.setStatue(ResultEnum.WARNING.getCode());
        return   resultInfo ;
    }

    /**
     * 异常
     * 异常信息
     * @param msg 味精
     * @return {@link JSONObject}
     */
    public static <T> ResultInfo exception(String msg){
        ResultInfo resultInfo = new ResultInfo();
        resultInfo.setCode("1005");
        resultInfo.setMsg(msg);
        resultInfo.setStatue(ResultEnum.WARNING.getCode());
        return   resultInfo ;

    }
    /**
     * 异常
     * @param code 代码
     * @param msg  信息
     * @return {@link JSONObject}
     */
    public static <T> ResultInfo exception(String code,String msg) {
        ResultInfo resultInfo = new ResultInfo();
        resultInfo.setCode("1005");
        resultInfo.setMsg(msg);
        resultInfo.setStatue(code);
        return   resultInfo ;
    }
}
